“All model are wrong some are useful”
–George EP Box–
Rt atau Reproductive Effective adalah sebuah metode untuk mengestimasi transmisi penyakit dengan asumsi bahwa intervensi pencegahan dilakukan. Rt menjadi salah satu indikator kesehatan masyarakat dan transmisi pada interim pada tahun 2021. (1)
Rt adalah model epidemik yang seperti kata George EP Box di atas, bisa jadi tidak presisi dengan kenyataan di lapangan, namun ketika ditafsirkan dengan benar, ini dapat mendorong intervensi dan kebijakan yang lebih baik.
Beberapa package yang digunakan dalam analisis ini
library(tidyverse) #untuk cleaning
library(dplyr) #untuk cleaning
library(rio) #untuk ekspor xlsx
library(EpiEstim)
library(ggplot2) #untuk grafik
library(incidence) #untuk kurva epidemiologi
library(lubridate) #untuk tanggal
library(plotly) #untuk tampilan interaktif grafik
library(DT) #untuk tampilan interaktif tabel
library(zoo) #untuk moving average
library(readr) #membaca csv
Di tutorial ini saya menggunakan data dari komputer saya, sehingga perlu menyesuaikan sesuai dari tempat menyimpan di komputer
data <- X220606_kasus_kako_harian_data
head(data, 10)
## # A tibble: 10 × 6
## Provinsi Kab Tanggal `Kasus Harian` `Meninggal Har…` `Pasien Rawat …`
## <chr> <chr> <date> <dbl> <dbl> <dbl>
## 1 ACEH ACEH BA… 2022-06-05 0 0 NA
## 2 ACEH ACEH BA… 2022-06-04 0 0 NA
## 3 ACEH ACEH BA… 2022-06-03 0 0 NA
## 4 ACEH ACEH BA… 2022-06-02 0 0 NA
## 5 ACEH ACEH BA… 2022-06-01 0 0 NA
## 6 ACEH ACEH BA… 2022-05-31 0 0 NA
## 7 ACEH ACEH BA… 2022-05-30 0 0 NA
## 8 ACEH ACEH BA… 2022-05-29 0 0 NA
## 9 ACEH ACEH BA… 2022-05-28 0 0 NA
## 10 ACEH ACEH BA… 2022-05-27 0 0 NA
data_olah_Depok <- filter(data, Kab == "KOTA DEPOK")
Rt_Depok <- data.frame(I = data_olah_Depok$`Kasus Harian`, dates = data_olah_Depok$Tanggal, Kab = data_olah_Depok$Kab)
headdata <- head(Rt_Depok,25)
DT::datatable(headdata)
Tahapan-tahapan:
Rt_Depok <- Rt_Depok[order(as.Date(Rt_Depok$dates, format="%m/%d/%y")),]
kasus_tanggal_Depok <- Rt_Depok[-c(1:7),]
sum(is.na(Rt_Depok))
## [1] 4
Rt_Depok$I[is.na(Rt_Depok$I)] = 0
ggplot(kasus_tanggal_Depok, aes(dates,I)) + geom_bar(stat="identity")
## Warning: Removed 3 rows containing missing values (position_stack).
Rt_Depok2 <- Rt_Depok %>% mutate(dma = rollmean(I, k = 7, align = "right", fill = 0))
a <- ggplot(Rt_Depok2, aes(dates,I)) + geom_bar(stat="identity", alpha = 0.3) + geom_line(aes(dates,dma),colour = "firebrick", size = 1.3)
ggplotly(a)
Epiestim : (2) \[E[I_t]=R_t\sum_{s=1}^{t} I_t-_sW_s\]
Dengan interpretasi sebagai berikut:
Pada model ini digunakan Serial Interval dari Song et.al yaitu (median = 3, SD = 2.5) (3)
*CATATAN: Dalam melihat nilai Rt harus memperhatikan kurva epidemiologi, dan utamanya dalam menafsirkan
res_parametric_si_Depok <- estimate_R(Rt_Depok, method="parametric_si", config = make_config(list(mean_si = 3, std_si = 2.5)))
## Default config will estimate R on weekly sliding windows.
## To change this change the t_start and t_end arguments.
plot(res_parametric_si_Depok, legend = FALSE)
R_epiestim_Depok <- data.frame(tanggal = kasus_tanggal_Depok$dates, kasus = kasus_tanggal_Depok$I, median_r = res_parametric_si_Depok$R$`Median(R)`,
std = res_parametric_si_Depok$R$`Std(R)`, Kab = kasus_tanggal_Depok$Kab)
R_epiestim_Depok$bawah <- R_epiestim_Depok$median_r - R_epiestim_Depok$std
R_epiestim_Depok$atas <- R_epiestim_Depok$median_r + R_epiestim_Depok$std
R_epiestim_Depok$batas <- 1
headdata2 <- head(R_epiestim_Depok,50)
DT::datatable(headdata2)
Di sini akan dibuat plot atau grafik berdasarkan perhitungan Rt dan diperbandingkan dengan kurva epidemiologi. Saya juga akan membagi dua zonasi waktu: Sebelum Lebaran dan Setelah Lebaran
ggplot(R_epiestim_Depok, aes(tanggal, median_r)) +
geom_line(color = "firebrick", size = 1) + geom_ribbon(aes(ymin=bawah, ymax=atas), alpha=0.5, fill = "gray")
R_epiestim_Depok <- R_epiestim_Depok %>% filter(tanggal > '2022-03-01')
g <- ggplot(R_epiestim_Depok, aes(tanggal, median_r)) +
geom_rect(data = R_epiestim_Depok, aes(xmin= as.Date("2022-05-01"), xmax= as.Date(last(tanggal)), ymin=-Inf, ymax=Inf), fill = '#c8eeee', alpha = 0.5) +
geom_line(color = "firebrick", size = 1) + geom_ribbon(aes(ymin=bawah, ymax=atas), alpha=0.5, fill = "gray") +
geom_line(aes(y = batas), color="black", linetype="dashed") + theme_minimal()
g
ggplotly(g)
g2 <- ggplot(R_epiestim_Depok, aes(tanggal, kasus)) +
geom_rect(data = R_epiestim_Depok, aes(xmin= as.Date("2022-05-01"), xmax= as.Date(last(tanggal)), ymin=-Inf, ymax=Inf), fill = '#c8eeee', alpha = 0.5) +
geom_bar(fill = "deepskyblue", color = "black", stat = "identity") + theme_minimal()
g2
ggplotly(g2)